package com.example.sprintboot.controller;
import com.example.sprintboot.common.Result;
import com.example.sprintboot.entity.User;
import com.example.sprintboot.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    private UserService userService;
    
    //    新增数据
    @PostMapping("/register")
    public Result register(@RequestBody User user) {
        //查询
       User existUser= userService.findByUserName(user.getUsername());
       if (existUser==null){
           //没有使用，完成注册
           userService.register(user.getUsername(),user.getPassword());
           return Result.success();
       }else {
           //被使用
           return Result.error("用户名被占用");

       }
    }

    //上传头像
    @PostMapping("/upload/avatar")
    public Result uploadAvatar(@RequestParam("file") MultipartFile file, @RequestParam("userId") Integer userId) {
        if (file.isEmpty()) {
            return Result.error("文件不能为空");
        }
        
        try {
            // 获取原始文件名
            String originalFilename = file.getOriginalFilename();
            // 获取文件扩展名
            String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
            // 生成新的文件名，避免重复
            String newFilename = UUID.randomUUID().toString() + extension;
            
            // 设置文件保存路径（在项目根目录下的uploads文件夹）
            String uploadDir = System.getProperty("user.dir") + "/uploads/";
            File dir = new File(uploadDir);
            if (!dir.exists()) {
                dir.mkdirs();
            }
            
            // 保存文件
            File destFile = new File(uploadDir + newFilename);
            file.transferTo(destFile);
            
            // 生成访问URL（相对路径）
            String avatarUrl = "/uploads/" + newFilename;
            
            // 更新数据库中的用户头像
            userService.updateAvatar(userId, avatarUrl);
            
            return Result.success(avatarUrl);
        } catch (IOException e) {
            e.printStackTrace();
            return Result.error("文件上传失败: " + e.getMessage());
        }
    }

    //获取用户信息
    @GetMapping("/{id}")
    public Result getUserById(@PathVariable Integer id) {
        User user = userService.findById(id);
        if (user != null) {
            return Result.success(user);
        } else {
            return Result.error("用户不存在");
        }
    }


}
